#include <iostream>
#include <string>
#include <fstream>
#include "Almacenamiento.h"

void EstrategiaAlmacenamientoTexto::abrir(Almacenamiento* almacenamiento) {
	Metadata* meta;
	meta = almacenamiento->abrir('t');
	if (meta != NULL && meta->getTipo() != 't') {
		almacenamiento->setExisteMetadata(true);
		almacenamiento->setMetadata(meta);
	} else if (meta == NULL) {
		almacenamiento->setExisteMetadata(false);
		almacenamiento->inicializarMetadata('t');
	} else
		throw 1;

}

void EstrategiaAlmacenamientoTexto::cerrar(Almacenamiento* almacenamiento) {
	almacenamiento->cerrar();
}

int EstrategiaAlmacenamientoTexto::almacenar(Almacenamiento* almacenamiento,
		Registro componente) {//guarda los datos y devuelve la direccion.
	almacenamiento->escribirTexto(componente);
	return 1;
}

Registro EstrategiaAlmacenamientoTexto::recuperar(
		Almacenamiento* almacenamiento, int offset, list<string> claves) {
	Registro* registro = dynamic_cast<Registro*> (almacenamiento->leerTexto(offset));
	return *registro;
}

void EstrategiaAlmacenamientoTexto::modificar(Almacenamiento* almacenamiento,
		Registro componente, int offset) {
	almacenamiento->modificarTexto(componente);
}
void EstrategiaAlmacenamientoTexto::borrar(Almacenamiento* almacenamiento,
		Registro componente) {
	almacenamiento->borrarTexto(componente);
}
void EstrategiaAlmacenamientoTexto::borrar(Almacenamiento* almacenamiento, int offset,list<string> claves){

}

void EstrategiaAlmacenamientoTexto::imprimir(Almacenamiento* almacenamiento) {

}
